SSL 和 TLS 是常見的網路通訊加密協議,我今天的目標是學習它們的工作原理還有如何保護數據傳輸,以及 SSL/TLS 的重要性在哪裡。
SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)都是用來加密網路通訊的協議。它們的作用是保護數據傳輸的機密、完整,和認證雙方身份,確保數據在傳輸過程中不會被竊取或篡改。SSL 和 TLS 讓我們的資料在互聯網上所進行的對話,即使有人攔截到對話內容,他們也無法讀懂,因為資料是加密的。
SSL 是較早期的加密協議,但隨著時間推移,SSL 存在一些安全漏洞,因此被 TLS 所取代。現在我們所用的 SSL 大多實際上指的是 TLS,因為 TLS 是 SSL 更安全的版本,很多人仍然習慣使用 SSL 這個名稱來指這兩者。
當使用者在瀏覽器中進到一個網站,尤其是需要輸入像是密碼、信用卡號碼等私人訊息時,如果沒有加密保護,這些資料在傳輸過程中可能會被攻擊者攔截或修改,這就是中間人攻擊(Man-in-the-Middle Attack), SSL/TLS 加密就是為了防止攻擊發生,保護數據的安全和隱私。
當一個網站使用 SSL/TLS 加密時,可以在瀏覽器的地址欄中看到一個小鎖頭圖示,網址的開頭會變成「https://」而不是「http://」,代表網站正在使用 HTTPS(HTTP Secure),也就是在 HTTP 協議上添加 SSL/TLS 加密的版本。
SSL/TLS 協議的步驟大致分為兩個階段:握手階段和數據傳輸階段,以確保雙方之間的通訊是加密且安全的。
Handshake Phase 是 SSL/TLS 協議的初始過程,讓客戶端和伺服器相互確認對方的身份並協商加密方式。
步驟一: Client Hello(客戶端問候)
客戶端發送 Hello 的訊息給伺服器,告訴它能夠支援的加密演算法(RSA、AES)、TLS 版本、和一些隨機數據。
步驟二: Server Hello(伺服器問候)
伺服器回應客戶端,選擇一個雙方都支援的加密演算法,並附上伺服器的證書(通常是數位證書,包含伺服器的公開金鑰)和它生成的隨機數。
步驟三: Certificate Verification(證書驗證)
客戶端會驗證伺服器發來的證書,確保它是由可信任的憑證頒發機構(CA)簽發且有效。如果證書無效,連線將中斷。
步驟四: Key Exchange(密鑰交換)
客戶端使用伺服器的公開金鑰加密一個隨機生成的「會話密鑰」,並將這個加密的會話密鑰發給伺服器。伺服器使用它的私密金鑰解密這個密鑰,從而確立雙方之間的共享會話密鑰。
步驟五: Finish Handshake(完成握手)
雙方通過計算並交換一個握手完成訊息來確認握手過程無誤,並開始進入安全的數據傳輸階段。
以上步驟完成後,雙方將使用剛才協商的會話密鑰來進行實際的數據加密和傳輸。具體過程如下:
步驟六: 加密數據傳輸
客戶端和伺服器使用協商好的會話密鑰,對應用層的資料進行加密(通常是對稱加密,如 AES),並傳輸這些加密後的數據。即使第三方截獲數據,也無法讀取內容,因為數據是加密的。
步驟七: 驗證數據完整性
每次數據傳輸時,雙方還會附加一個訊息驗證碼(Message Authentication Code, MAC),以確保數據在傳輸過程中沒有被竄改。如果發現數據被修改,接收端可以立刻拒絕這段數據。
當數據傳輸結束時,客戶端和伺服器會通過發送一個關閉警告訊息,表示它們要終止加密連線。
TLS 1.2 是目前最常用的版本,但越來越多的網站和服務開始轉向 TLS 1.3,因為 TLS 1.3 有不少進步,不但有更的安全性,刪除許多不安全的加密算法,還提升性能,使網速加快。
幾乎所有現代網站都使用 SSL/TLS 來加密數據,尤其是電子商務網站、銀行網站和需要輸入密碼的應用程式。例如,當我們在網路上購物並輸入信用卡號碼時,SSL/TLS 就會保護我們的資料,確保這些敏感信息不會被攔截。